{# Overseer's home as a map (overseer_map.layout, ``?view=map``): each process a node at its place in its tier, linking to its page, with its state and its containers' CPU and memory; the connections between them as lines (in the tone of what each leads to, dashed for queued work, dotted for a key Secrets holds); data in its shape (a store, the queue, object storage: a glyph here, the outline opened up); what runs in the webserver as chips in the Server's node, two to a row, each with its cost to load (load_cost). Its links swap ``map_target`` (the main area; a table's, in Database > Tables). Rendered in the page and again for each frame. #} {% from "components/macros/layout.html" import chip, health_badge, hint_panel, status_dot %} {% from "components/macros/icons.html" import icon %} {% from "pages/overseer/_glance_macros.html" import cause, figures %} {% from "pages/overseer/_macros.html" import line_link, todos %} {# A node's name, linking to its page; plain for what has none: a piece of a service opened up in full, an outside provider muted. #} {% macro node_title(node, size="") -%} {% if node.url %}{{ node.title }} {%- else %}{{ node.title }}{% endif %} {%- endmacro %} {# Open a node up: the Server into what runs in it, a service into its pieces. #} {% macro zoom_link(node) -%} {% if node.zoom %}{{ icon("zoom-in", "w-4 h-4") }}Open up {{ node.title }}{% endif %} {%- endmacro %} {% if map_trail %} {# Opened up (overseer_zoom: the Server, a service in it): the way back up a level at a time. #} {% endif %} {% if map_overlays %} {# What tones the nodes instead of their health (overseer_heat), and what it shows. #} {% endif %} {% if map_rail %} {# What nearly every piece uses (overseer_zoom.RAIL): a rail, not a line from each; hovering one outlines every piece that uses it. #}
{% for tone in flagged %}{{ line_key[tone] }}{% endfor %} Hover a line for why
{% endif %} {# At least the rest of the window (map-fill; the Flow scrolls sideways, so keeps its own height), the lines' viewBox stretching with it. #}{{ lane.label }}
{% endfor %} {% for node in map_nodes %} {% if map_compact %} {# Its dot and name, under them its cost to load and what it carries (a heat's figure); data in its outline (the stroke takes the tone, as a border does), an outside provider a dashed pill. What it says, why it fails and the fix (a key's set dialog), under it on hover (CSS, so a live frame cannot close it; padded, not spaced, so the pointer can move into it). #} {% set outside = node.role == map_roles.OUTSIDE %} {% set shaped = node.role and not outside %} {% set outline = "" if shaped else ("rounded-full items-center border border-dashed bg-aegis-card" if outside else ("rounded-lg border border-dashed" if node.missing else "rounded-lg border bg-aegis-card")) %}{{ node.figure }}
{% endif %} {{ cause(node) }} {% if node.glance %} {% for row in node.glance.rows[:2] %}{{ node.note }}
{% endif %} {% if node.hosted %}